﻿using JetBrains.Annotations;
using MugenMvvmToolkit.Models;

namespace MugenMvvmToolkit.Interfaces
{
    /// <summary>
    ///     Represents the entity state entry.
    /// </summary>
    public interface IEntityStateEntry
    {
        /// <summary>
        ///     Gets or sets the state of the <see cref="EntityState" />.
        /// </summary>
        EntityState State { get; }

        /// <summary>
        ///     Gets the entity object.
        /// </summary>
        [NotNull]
        object Entity { get; }
    }

    /// <summary>
    ///     Represents the entity state entry.
    /// </summary>
    public interface IEntityStateEntry<out T> : IEntityStateEntry
    {
        /// <summary>
        ///     Gets the entity object.
        /// </summary>
        [NotNull]
        new T Entity { get; }
    }
}